Go で WebAssembly を利用した実用的なプラグインシステムの構築方法
資料
/icons/hr.icon
WASMでプラグイン作る
Sandbox機構により安全に実行できる
WASMランタイムがあればどこでも動く
Guetで実行する処理をHostで制限することができる
GuestがクラッシュしてもHostが巻き込まれない
Shared Library(公式)
GusetがクラッシュするとHostもクラッシュする
Guestで動くコードに制限がない
GoとGo Modulesを揃えないと動かない
WASM以外(RPC)
hasicorp/go-plugin
WASI
Host側でアクセスを細かく制御できる
0.2までリリース済
Goは0.1まで実装済
アプリケーションにより、必要なものが異なるのでコンパイラかインタプリタか選ぶ
Tiny GoとGo、どちらでWASMプラグインを作るか精査する必要がある
wazero
wasi-go
dispatchrun/net
上記二つを併せてNetwork Socket対応の実装を利用できる
後でまとめる